import axios from 'axios';
import Config from "../config/Config";
import {getToken, removeUserInfo} from "../hooks/user/useUserLogin";

// 创建一个 axios请求实例（用于接口的数据请求工具）
const service = axios.create({
    // process.env.NODE_ENV === 'development' 来判断是否开发环境
    baseURL: Config.baseUrl,
    timeout: 5000
});

// 发送请求的前置处理
service.interceptors.request.use(
    config => {
        const token = getToken();
        if (token) {
            config.headers['Authorization'] = 'Bearer ' + token;
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 获取到请求后的后置处理
service.interceptors.response.use(
    response => {
        if (response.status === 200) { // http状态码===200 成功获取到数据
            if (response.data && response.data.success) { // 接口数据中的data存在并且 服务器操作成功（data.success是服务器自定义的参数）
                return response.data;
            }
            // 操作失败
            return Promise.reject(response.data);
        } else { // 接口请求失败
            return Promise.reject(response.data);
        }
    },
    error => {
        if (error.response.status === 401) { // 权限不足 清除登录信息 跳转登录页面
            removeUserInfo();
        }
        // 请求阶段报错（比如服务器报错，断网等）
        return Promise.reject(error.response.data || error);
    }
);

export default service;
